package com.sy.simpleegg.room.repository

import com.sy.simpleegg.room.dao.SaveCoinDao
import com.sy.simpleegg.room.entity.SaveCoinEntity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext

class SaveCoinRepository(private val saveCoinDao: SaveCoinDao) {

    suspend fun getAll(): MutableList<SaveCoinEntity>?{
        return withContext(Dispatchers.IO){
            saveCoinDao.getAll()
        }
    }

    suspend fun getBySn(sn: String): MutableList<SaveCoinEntity>?{
        return withContext(Dispatchers.IO){
            saveCoinDao.getBySn(sn)
        }
    }

    suspend fun getCanReport(): MutableList<SaveCoinEntity>?{
        return withContext(Dispatchers.IO){
            saveCoinDao.getCanReport()
        }
    }

    suspend fun updateStepBySn(sn: String, step: Int){
        withContext(Dispatchers.IO){
            saveCoinDao.updateStepBySn(sn, step)
        }
    }

    suspend fun update(saveCoinEntity: SaveCoinEntity){
        withContext(Dispatchers.IO){
            saveCoinDao.update(saveCoinEntity)
        }
    }

    suspend fun update(sn: String, coins: String){
        withContext(Dispatchers.IO){
            saveCoinDao.update(sn, coins)
        }
    }

    suspend fun insert(saveCoinEntity: SaveCoinEntity){
        withContext(Dispatchers.IO){
            saveCoinDao.insert(saveCoinEntity)
        }
    }

    suspend fun insertAll(saveCoinEntities: MutableList<SaveCoinEntity>){
        withContext(Dispatchers.IO){
            saveCoinDao.insertAll(saveCoinEntities)
        }
    }

    suspend fun delete(saveCoinEntity: SaveCoinEntity){
        withContext(Dispatchers.IO){
            saveCoinDao.delete(saveCoinEntity)
        }
    }

    suspend fun deleteAll(){
        withContext(Dispatchers.IO){
            saveCoinDao.deleteAll()
        }
    }

    suspend fun deleteBySn(sn: String){
        withContext(Dispatchers.IO){
            saveCoinDao.deleteBySn(sn)
        }
    }
}